package com.hl.order.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 优惠券对象 coupons
 * 
 * @author ruoyi
 * @date 2025-08-07
 */
public class Coupons extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 优惠券id，主键自增 */
    private Long couponsId;

    /** 优惠类型（1：满减券 2：折扣券） */
    @Excel(name = "优惠类型", readConverterExp = "1=：满减券,2=：折扣券")
    private Integer couponsType;

    /** 优惠券描述（如：满5-2、8折券） */
    @Excel(name = "优惠券描述", readConverterExp = "如=：满5-2、8折券")
    private String couponsDesc;

    /** 折扣额度（折扣券专用，如8.00表示8折） */
    @Excel(name = "折扣额度", readConverterExp = "折=扣券专用，如8.00表示8折")
    private BigDecimal discountAmount;

    /** 减价额度（满减券专用，如2.00表示减2元） */
    @Excel(name = "减价额度", readConverterExp = "满=减券专用，如2.00表示减2元")
    private BigDecimal reductionAmount;

    /** 优惠券使用条件（满多少金额可用，0表示无门槛） */
    @Excel(name = "优惠券使用条件", readConverterExp = "满=多少金额可用，0表示无门槛")
    private BigDecimal couponsCondition;

    /** 优惠券状态（1：可领取 2：已领取待使用 3：已使用 4：已失效） */
    @Excel(name = "优惠券状态", readConverterExp = "1=：可领取,2=：已领取待使用,3=：已使用,4=：已失效")
    private Integer couponsStatus;

    /** 限制使用日期（截至日期） */
    @Excel(name = "限制使用日期", readConverterExp = "截=至日期")
    private Date couponsLimitdate;

    /** 店铺id（0表示平台券，其他为店铺券） */
    @Excel(name = "店铺id", readConverterExp = "0=表示平台券，其他为店铺券")
    private Long shopId;

    public void setCouponsId(Long couponsId) 
    {
        this.couponsId = couponsId;
    }

    public Long getCouponsId() 
    {
        return couponsId;
    }

    public void setCouponsType(Integer couponsType)
    {
        this.couponsType = couponsType;
    }

    public Integer getCouponsType()
    {
        return couponsType;
    }

    public void setCouponsDesc(String couponsDesc) 
    {
        this.couponsDesc = couponsDesc;
    }

    public String getCouponsDesc() 
    {
        return couponsDesc;
    }

    public void setDiscountAmount(BigDecimal discountAmount) 
    {
        this.discountAmount = discountAmount;
    }

    public BigDecimal getDiscountAmount() 
    {
        return discountAmount;
    }

    public void setReductionAmount(BigDecimal reductionAmount) 
    {
        this.reductionAmount = reductionAmount;
    }

    public BigDecimal getReductionAmount() 
    {
        return reductionAmount;
    }

    public void setCouponsCondition(BigDecimal couponsCondition) 
    {
        this.couponsCondition = couponsCondition;
    }

    public BigDecimal getCouponsCondition() 
    {
        return couponsCondition;
    }

    public void setCouponsStatus(Integer couponsStatus)
    {
        this.couponsStatus = couponsStatus;
    }

    public Integer getCouponsStatus()
    {
        return couponsStatus;
    }

    public void setCouponsLimitdate(Date couponsLimitdate) 
    {
        this.couponsLimitdate = couponsLimitdate;
    }

    public Date getCouponsLimitdate() 
    {
        return couponsLimitdate;
    }

    public void setShopId(Long shopId) 
    {
        this.shopId = shopId;
    }

    public Long getShopId() 
    {
        return shopId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("couponsId", getCouponsId())
            .append("couponsType", getCouponsType())
            .append("couponsDesc", getCouponsDesc())
            .append("discountAmount", getDiscountAmount())
            .append("reductionAmount", getReductionAmount())
            .append("couponsCondition", getCouponsCondition())
            .append("couponsStatus", getCouponsStatus())
            .append("couponsLimitdate", getCouponsLimitdate())
            .append("shopId", getShopId())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
